Package-level declarations
Types
Abstract base class for AgentProcessRepository implementations that enforces ephemeral process handling.
Core Action model in Agent system. An individual action step used in an Agent Not intended for direct use by application code. User applications should use the annotation programming model with @Agentic and @Action or the Kotlin DSL, or a non-code representation such as YML.
Base class for action execution exceptions with built-in retry classification.
History element
Serializable action metadata
Retry policy selector for an action.
Status of action execution. Concrete results of running the action will be side effects: typically, changes to the ProcessContext blackboard. This just indicates what happened.
Status code for execution of an action
Sentinel object added to the blackboard when an action completes without producing a result (null, Unit, or Void return). This invalidates any @Trigger precondition that was satisfied before the action ran.
An agent defines a set of actions and conditions that enable planning.
Safely serializable agent metadata
An AgentPlatform can run agents. It can also act as an agent itself, drawing on all of its agents as its own actions, goals, and conditions. An AgentPlatform is stateful, as agents can be deployed to it. See TypedOps for a higher level API with typed I/O. Typically, there is one AgentPlatform per Spring Boot application, with agents discovered by classpath scanning for @Agent annotations, but this is not a requirement.
Run of an agent
Callback interface for interleaving logic with the lifecycle of an AgentProcess and its actions.
Repository for agent processes.
Stuck means we failed to find a plan from here
Safely serializable status for agent processes.
Defines the scope of an agent or agents: Goals, conditions and actions. Both Agents and AgentPlatforms are AgentScopes.
Represents a relationship between two domain types.
A Blackboard is how an AgentProcess maintains context. Blackboard operations are threadsafe. Blackboards are immutable in the sense that once an object has been added it cannot be removed. However, objects can be hidden so they are no longer visible to retrieval operations (e.g. driving planning).
Callback to update the blackboard before replanning. Defined as a fun interface for Java interoperability.
Semantics of holding the value for the property
Convenient class for a condition that evaluates to true or false.
A Condition is a named, well known predicate that can be evaluated and reused across multiple Actions.
Core tool groups exposed by the platform These should be supported in any AgentPlatform instance.
If this value is false, we cannot create new instances of this type: For example, it's a reference.
Exposes access to a set of known data types
Step that takes data as input and produces data as output.
A blackboard value whose identity is a DomainType (typically a DynamicType declared in YAML, not a JVM class) plus a property map carrying the actual data.
Type known to the Embabel agent platform. May be backed by a domain object or ba dynamic type. Supports inheritance.
Property that holds a nested DomainType Represents a relationship to another domain object
Simple data type. Enables interop with non-JVM types.
Event triggered when an agent process is terminated early by a policy.
Enables early termination of an agent process.
Invocation we made to an EmbeddingServiceMetadata. Mirror of LlmInvocation for embedding services.
History of embedding invocations made during an agent process or other embedding-consuming component (e.g. ingestion pipelines, RAG indexing).
Agent platform goal. Exposes GOAP metadata.
Identities associated with an agent process.
Access to agent infrastructure via injected parameter.
Binding definition of form name:Type If name is omitted, it is assumed to be 'it' Used to build preconditions from input and output bindings. Default name ("it") has a special meaning. It will be satisfied by an instance of the correct type being bound to "it", but also by the final result of the action having the correct type.
Typed backed by a JVM object It's good practice to annotate classes with @JsonClassDescription for better descriptions: otherwise, only the simple class name will be used. Use the @CreationPermitted annotation to indicate whether new instances of this type can be created. Default is true.
Invocation we made to an LLM
History of LLM invocations made during an agent process.
Control how much detail to log from LLM interactions.
Property definition that refers to a named type, usually a simple type.
Marker interface indicating that an operation should NOT be retried on failure.
Status of an agent or action
Process state and services. Created by the platform, not user code.
Controls how an AgentProcess is run. Prevents infinite loops, enforces budget limits, and manages delays.
How to run an AgentProcess Create and customize using withers
Type-safe validation rule interface for property validation. Implement this interface to create custom validation rules.
Exception thrown by a tool to signal that the tool loop should terminate and the agent should replan based on the updated blackboard state.
Defines semantic metadata for a property. This annotation allows attaching arbitrary key-value metadata to properties, which can be used for semantic processing such as proposition extraction, relationship mapping, and natural language generation.
Allows consuming tools and exposing them to LLMs. Interface allowing abstraction between tool concept and specific tools.
A group of tools to accomplish a purpose, such as web search. Introduces a level of abstraction over tools.
Metadata about a tool group. Interface as platforms may extend it
Specifies a tool group that a tool consumer requires.
Resolution of a tool group request
Publisher interface for tools using the framework-agnostic Tool interface.
Consumer interface for tools using the framework-agnostic Tool interface.
Value property with type-safe validation rules. Extends ValuePropertyDefinition with compile-time checked validation.
Simple value property, such as string, int, boolean, etc. Not necessarily a scalar, as cardinality may be LIST or SET.
Properties
Reserved key on a Map<String, Any?> blackboard value carrying the flattened ancestor type names (self + parents + grandparents…), used by satisfiesType to match preconditions on parent types. Value is an Iterable<String> of names. Optional — when absent, only TYPE_NAME_KEY is consulted, which means the map only satisfies its own type, not its ancestors. Emitters that know the type's parent chain should populate this so the value behaves like a DomainInstance for inheritance.
Reserved key on a Map<String, Any?> blackboard value carrying its declared DomainType name. Lets a value participate in type-aware matching (satisfiesType) without a carrier class — useful for pack-authored tools, sandbox script returns, and other emitters that don't want to define a Kotlin class. Value is the type's DomainType.name.
Functions
Count entries of the given type
Look up a DomainType by exact DomainType.name (FQN or whatever the type was registered under) and fall back to a simple-name match (name.substringAfterLast('.')). Lets callers refer to a type by its natural simple name in YAML / spec form even though the platform registered the JVM-backed type under its FQN. Returns null so callers can chain other lookups (classpath, etc.) before throwing.
Last entry of the given type, if there is one
Return all entries of a specific type
Convenience function to get the result of a specific type
Does the bound instance satisfy the type.